package com.smartleanx.module.hrm.dal.dataobject.programme;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 *
 * </p>
 *
 * @author mybatis-plus
 * @since 2024-11-28
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class HrmProgrammeEmployee extends Model<HrmProgrammeEmployee> {


    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 社保公积金方案id
     */
    private Integer programmeId;

    /**
     * 员工id
     */
    private Long userId;

    /**
     * 员工名称
     */
    private String userName;

    /**
     * 员工类型 （全职 兼职）
     */
    private Integer userType;

    /**
     * 身份证号
     */
    private String idNumber;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 部门id
     */
    private Long departmentId;

    /**
     * 部门名称
     */
    private String departmentName;

    /**
     * 员工状态
     */
    private Integer userStatus;

    /**
     * 员工入职时间
     */
    private String dateEmployment;

    /**
     * 所属公司id
     */
    private Integer companyId;

    /**
     * 0不缴纳社保 1缴纳社保
     */
    private Integer isProgramme;

    /**
     * 社保开始缴纳月份
     */
    private String programmeStartTime;

    /**
     * 社保基数
     */
    private BigDecimal programmeLimit;

    /**
     * 0不缴纳公积金 1缴纳公积金
     */
    private Integer isAccumulation;

    /**
     * 公积金开始缴纳月份
     */
    private String accumulationStartTime;

    /**
     * 公积金基数
     */
    private BigDecimal accumulationLimit;


    private Integer programmeState;

    private String programmeStopTime;

    private String tenantId;


    private String programmeLimitStr;

    private String accumulationLimitStr;

    //     1 不区分险种 2区分险种
    private Integer programmeType;

    private String programmeReason;

    private Integer accumulationType;

    private Integer cityId;

    private Integer accountId;

    @TableField(exist = false)
    private List<JSONObject> programmeLimitList;
    @TableField(exist = false)
    private List<JSONObject> accumulationLimitList;



}
